package com.itlong.cloud.operate.service;

import com.itlong.cloud.POJO.DTO.operate.OperateRoleGetPageDTO;
import com.itlong.cloud.POJO.PO.OperateRolePO;
import com.itlong.cloud.utils.page.Page;

import java.util.List;

/**
 * <desc>
 *      运营-角色信息业务处理接口
 * </desc>
 *
 * @createDate 2017/09/25
 */
public interface IOperateRoleService {
    /**
     * <desc>
     *      保存角色
     * </desc>
     *
     * @param operateRolePO 角色实体
     * @return sql执行行数
     * @author Jiaqi.X
     * @createDate 2017/09/25
     */
    Integer save(OperateRolePO operateRolePO) throws Exception;
    /**
     * <desc>
     *      更新角色
     * </desc>
     *
     * @param operateRolePO 资源角色实体
     * @return sql执行行数
     * @author Jiaqi.X
     * @createDate 2017/09/25
     */
    Integer update(OperateRolePO operateRolePO) throws Exception;
    /**
     * <desc>
     *      通过id获取角色
     * </desc>
     *
     * @param operateRolePO 角色实体
     * @return 角色实体
     * @author Jiaqi.X
     * @createDate 2017/09/25
     */
    OperateRolePO getOne(OperateRolePO operateRolePO);
    /**
     * <desc>
     *      获取所有角色
     * </desc>
     *
     * @return 资源实体集合
     * @author Jiaqi.X
     * @createDate 2017/09/25
     */
    List<OperateRolePO> getList(String userId);

    /**
     * <desc>
     *      获取分页数据
     * </desc>
     *
     * @param pageDTO 查询参数DTO
     * @return page模型
     * @author Jiaqi.X
     * @createDate 2017/09/25
     */
    Page<OperateRolePO> getPage(OperateRoleGetPageDTO pageDTO) throws Exception;

    /**
     * <desc>
     *      删除角色
     * </desc>
     *
     * @param roleIds 角色id数组
     * @return sql执行行数
     * @author Jiaqi.X
     * @createDate 2017/09/25
     */
    Integer delete(String roleIds) throws Exception;

    /**
     * <desc>
     *      保存角色菜单资源
     * </desc>
     *
     * @param roleId 角色id
     * @param functionIds 资源id 多个,号分隔
     * @return
     * @author Jiaqi.X
     * @version 1.0
     */
    Integer saveRoleFunction(String roleId,String functionIds,String assessFunctionIds,String myUserName) throws Exception;


    /**
     * <desc>
     *      为角色分配人员
     * </desc>
     *
     * @param roleId    角色id
     * @param allotUsers    需要分配的人员id 多个，号分隔
     * @param userIds 当前列表所有人员id 多个，号分隔
     * @return sql执行行数
     * @author Jiaqi.X
     * @createDate 2017/10/10
     */
    Integer saveRoleUsers(String roleId,String allotUsers,String userIds) throws Exception;

    /**
     * <desc>
     *      判断角色是否已存在
     * </desc>
     *
     * @param roleName 角色名称
     * @return
     * @author Jiaqi.X
     * @createDate 2017/12/25
     */
    Integer checkRoleNameExist(String roleName);
}
